//#define _CRT_SECURE_NO_WARNINGS 1
//#include"List.h"
//
//LTNode* BuyListNode(LTDataType x)
//{
//	LTNode* newnode = (LTNode*)malloc(sizeof(LTNode));
//	newnode->next = NULL;
//	newnode->prev = NULL;
//	newnode->data = x;
//	return newnode;
//}
//
//LTNode* ListInit()
//{
//	LTNode* phead = (LTNode*)malloc(sizeof(LTNode));
//	phead->next = phead;
//	phead->prev = phead;
//	return phead;
//}
//void ListPushBack(LTNode* phead, LTDataType x)
//{
//	assert(phead);
//	LTNode* tail = phead->prev;
//	LTNode* newnode = BuyListNode(x);
//	tail->next = newnode;
//	newnode->prev = tail;
//	newnode->next = phead;
//	phead->prev = newnode;
//}
//
//void ListPushFront(LTNode* phead, LTDataType x)
//{
//	assert(phead);
//	LTNode* newnode = BuyListNode(x);
//	LTNode* next = phead->next;
//	phead->next = newnode;
//	newnode->prev = phead;
//	newnode->next = next;
//	next->prev = newnode;
//}
//void ListPopFront(LTNode* phead)
//{
//	assert(phead);
//	assert(phead->next != phead);
//	/*LTNode* next = phead->next;
//	LTNode* nextNext = next->next;
//	phead->next = nextNext;
//	nextNext->prev = phead;
//	free(next);*/
//	ListErase(phead->next);
//}
//void ListPopBack(LTNode* phead)
//{
//	assert(phead);
//	assert(phead->next != phead);
//	/*LTNode* tail = phead->prev;
//	LTNode* tailprev = tail->prev;
//	tailprev->next = phead;
//	phead->prev = tailprev;
//  free(tail);*/
//	ListErase(phead->prev);
//}
//
//LTNode* ListFind(LTNode* phead, LTDataType x)
//{
//	assert(phead);
//	LTNode* cur = phead->next;
//	while (cur != phead)
//	{
//		if (cur->data == x)
//		{
//			return cur;
//		}
//		cur = cur->next;
//	}
//	return NULL;
//}
//
//void ListInsert(LTNode* pos, LTDataType x)
//{
//	assert(pos);
//	LTNode* posprev = pos->prev;
//	LTNode* newnode = BuyListNode(x);
//	posprev->next = newnode;
//	newnode->prev = posprev;
//	newnode->next = pos;
//	pos->prev = newnode;
//}
//void ListErase(LTNode* pos)
//{
//	assert(pos);
//	LTNode* posprev = pos->prev;
//	LTNode* posNext = pos->next;
//	posprev->next = posNext;
//	posNext->prev = posprev;
//	free(pos);
//	pos = NULL;
//}
//
//void ListPrint(LTNode* phead)
//{
//	assert(phead);
//	LTNode* cur = phead->next;
//	while (cur != phead)
//	{
//		printf("%d", cur->data);
//		cur = cur->next;
//	}
//	printf("\n");
//}
//void ListDestroy(LTNode* phead)
//{
//	assert(phead);
//	LTNode* cur = phead->next;
//	while (cur != phead)
//	{
//		LTNode* next = cur->next;
//		free(cur);
//		cur = next;
//	}
//	free(phead);
//	phead = NULL;
//}